package com.foomia.truego.parsers.json;


import org.json.JSONException;
import org.json.JSONObject;

import com.foomia.truego.types.Tip;

public class TipParser extends AbstractParser<Tip> {
	@Override
	public Tip parse(JSONObject json) throws JSONException {

		Tip obj = new Tip();
		if (json.has("created")) {
			obj.setCreated(json.getString("created"));
		}
		if (json.has("distance")) {
			obj.setDistance(json.getString("distance"));
		}
		/*
		if (json.has("id")) {
			obj.setId(json.getString("id"));
		}
		*/
		if (json.has("@attributes")) {
			obj.setId(((JSONObject) json.get("@attributes")).getString("id"));
		}
		
		if (json.has("stats")) {
			obj.setStats(new TipParser.StatsParser().parse(json
					.getJSONObject("stats")));
		}
		if (json.has("status")) {
			obj.setStatus(json.getString("status"));
		}
		if (json.has("text")) {
			obj.setText(json.getString("text"));
		}
		if (json.has("user")) {
			obj.setUser(new UserParser().parse(json.getJSONObject("user")));
		}
		if (json.has("venue")) {
			obj.setVenue(new VenueParser().parse(json.getJSONObject("venue")));
		}
		
		if (json.has("title")) {
			obj.setText(json.getString("title"));
		}
		if (json.has("title")) {
			obj.setTitle(json.getString("title"));
		}
		if (json.has("small_image_url")) {
			obj.setPhoto(json.getString("small_image_url"));
		}
		/*
		if (json.has("data")) {
			Object jsog = ((JSONObject) json.get("data")).get("display");
			Object jsof = ((JSONObject) jsog).get("shops");
			Object jsos = ((JSONObject) jsof).get("shop");
			obj.setTitle(((JSONObject) jsog).getString("title"));
			obj.setPhoto(((JSONObject) jsog).getString("image"));
			obj.setShop(((JSONObject) jsos).getString("name"));
			obj.setTel(((JSONObject) jsos).getString("tel"));
			obj.setAddr(((JSONObject) jsos).getString("addr"));
			obj.setLng(((JSONObject) jsos).getString("longitude"));
			obj.setLat(((JSONObject) jsos).getString("latitude"));
		}
		*/
		
		return obj;
	}

	public static class StatsParser extends AbstractParser<Tip.Stats> {
		@Override
		public Tip.Stats parse(JSONObject json) throws JSONException {
			Tip.Stats stats = new Tip.Stats();
			if (json.has("donecount")) {
				stats.setDoneCount(json.getInt("donecount"));
			}
			if (json.has("todocount")) {
				stats.setTodoCount(json.getInt("todocount"));
			}

			return stats;
		}
	}

}
